package com.xb.loan.account.service;


import com.xb.loan.account.service.bean.LotCashBillVO;
import com.xb.loan.account.service.bean.LotCashInfoVO;
import com.xb.loan.log.exception.BizException;
import com.xb.loan.usercenter.service.user.bean.UserInfoVO;

import java.util.List;


public interface ILotCashService {
	
	/**
	 * 创建彩金账户
	 * @param lotCashInfoVO
	 * @return 插入记录数
	 */
	public int createLotCash(LotCashInfoVO lotCashInfoVO) throws BizException;
	
	/**
	 * 根据账户Id查询彩金账户信息
	 * @param accountId
	 * @return 彩金账户信息
	 */
	public LotCashInfoVO queryLotCashInfoById(String accountId) throws BizException;
	
	/**
	 * 根据用户Id查询彩金账户信息
	 * @param userId
	 * @return 彩金账户信息
	 */
	public LotCashInfoVO queryLotCashInfoByUserId(String userId) throws BizException;

	/**
	 * 查询用户彩金账户账务信息
	 * @param userId 用户ID
	 * @param feeType 
	 * @param billType 
	 * @param startDate 开始日期 格式“yyyy-MM-dd hh:mm:ss”
	 * @param endDate 截止日期 格式“yyyy-MM-dd hh:mm:ss”
	 * @param pageNum 第N页（必填）
	 * @param numPerPage  每页条数（必填）
	 * @return
	 * @throws BizException
	 */
	public List<LotCashBillVO> queryLotCashBill(String userId, Integer feeType, Integer billType, String startDate, String endDate, int pageNum, int numPerPage) throws BizException;
	
	/**
	 * 查询用户彩金账户账务信息总条数
	 * @param userId 用户ID
	 * @param feeType 
	 * @param billType 
	 * @param startDate 开始日期 格式“yyyy-MM-dd hh:mm:ss”
	 * @param endDate 截止日期 格式“yyyy-MM-dd hh:mm:ss”
	 * @return
	 * @throws BizException
	 */
	public int queryLotCashBillCount(String userId, Integer feeType, Integer billType, String startDate, String endDate) throws BizException;
	
	/**
	 * 修改用户彩金账户信息
	 * @param accountId 彩金账户ID
	 * @param partnerId 渠道ID
	 * @param status 
	 * @return
	 * @throws BizException
	 */
	public int updateLotCashInfo(String accountId, String partnerId, Integer status) throws BizException;
	
	/**
	 * 向指定用户账户增加指定金额
	 * @param foreignId 记账来源订单ID
	 * @param userInfoVO 记账主体
	 * @param money 金额
	 * @param billType 记账类型
	 * @param accountPeriod 账期
	 */
	public void addMoney(String foreignId, UserInfoVO userInfoVO, double money, int billType, String accountPeriod) throws BizException;
	
	/**
	 * 从指定用户账户扣除指定金额
	 * @param foreignId 记账来源订单ID
	 * @param userInfoVO 记账主体
	 * @param money 金额
	 * @param billType 记账类型
	 * @param accountPeriod 账期
	 */
	public void deductMoney(String foreignId, UserInfoVO userInfoVO, double money, int billType, String accountPeriod) throws BizException;

	/**
	 * 冲正接口
	 * @param userId 用户ID
	 * @param foreignId 记账来源订单ID
	 * @param billType 记账类型
	 */
	public void flushes(String userId, String foreignId, int billType) throws BizException;
}
